﻿using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace UniRx
{
	// Token: 0x02000417 RID: 1047
	[StructLayout(LayoutKind.Sequential, Size = 1)]
	public struct DictionaryRemoveEvent<TKey, TValue> : IEquatable<DictionaryRemoveEvent<TKey, TValue>>
	{
		// Token: 0x0600158A RID: 5514 RVA: 0x0005F73D File Offset: 0x0005DB3D
		public DictionaryRemoveEvent(TKey key, TValue value)
		{
			this = default(DictionaryRemoveEvent<TKey, TValue>);
			this.Key = key;
			this.Value = value;
		}

		// Token: 0x170001A0 RID: 416
		// (get) Token: 0x0600158B RID: 5515 RVA: 0x0005F754 File Offset: 0x0005DB54
		// (set) Token: 0x0600158C RID: 5516 RVA: 0x0005F75C File Offset: 0x0005DB5C
		public TKey Key { get; private set; }

		// Token: 0x170001A1 RID: 417
		// (get) Token: 0x0600158D RID: 5517 RVA: 0x0005F765 File Offset: 0x0005DB65
		// (set) Token: 0x0600158E RID: 5518 RVA: 0x0005F76D File Offset: 0x0005DB6D
		public TValue Value { get; private set; }

		// Token: 0x0600158F RID: 5519 RVA: 0x0005F776 File Offset: 0x0005DB76
		public override string ToString()
		{
			return string.Format("Key:{0} Value:{1}", this.Key, this.Value);
		}

		// Token: 0x06001590 RID: 5520 RVA: 0x0005F798 File Offset: 0x0005DB98
		public override int GetHashCode()
		{
			return EqualityComparer<TKey>.Default.GetHashCode(this.Key) ^ EqualityComparer<TValue>.Default.GetHashCode(this.Value) << 2;
		}

		// Token: 0x06001591 RID: 5521 RVA: 0x0005F7BD File Offset: 0x0005DBBD
		public bool Equals(DictionaryRemoveEvent<TKey, TValue> other)
		{
			return EqualityComparer<TKey>.Default.Equals(this.Key, other.Key) && EqualityComparer<TValue>.Default.Equals(this.Value, other.Value);
		}
	}
}
